/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * DatosEcoestresPanel.java
 *
 * Created on 17/01/2011, 17:20:58
 */

package presentacion.examen;

import hibernate.objeto.TilTestEstudioCardiologia;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JDialog;
import logica.CapaLogica;
import logica.validacion.CapaValidacion;
import presentacion.CapaPresentacion;
import presentacion.utilidad.maquetado.Fuente;
import presentacion.utilidad.maquetado.InformeError;

/**
 *
 * @author Gonzalo
 */
public class DatosTilTestPanel extends javax.swing.JPanel {

    /** Creates new form DatosEcoestresPanel */
    public DatosTilTestPanel() {
        initComponents();
        setearEventosQueCapturanTeclaEnterYEscape();
    }

    /**
     * Setea datos de la ventana.
     *
     */
    public void personalizarJDialog(TilTestEstudioCardiologia 
            tilTestEstudioCardiologia) {
        this.tilTestEstudioCardiologia =
                tilTestEstudioCardiologia;
        exhibirDatosEnPantalla();
        if(CapaPresentacion.modoVisualizacion) {
            inhabilitarCampos();
        }
    }

    /**
     * Permite visualizar los detalles de la evolución.
     *
     */
    private void exhibirDatosEnPantalla() {
        metodoTiltTest.getModel().setSelectedItem(
                tilTestEstudioCardiologia.getMetodoTilTestEstudioCardiologia());
        resultadoTiltTest.getModel().setSelectedItem(
                tilTestEstudioCardiologia.getResultadoTilTestEstudioCardiologia());
    }

    /**
     * Pone en false la propiedad enabled de todos los campos de ingreso.
     *
     */
    private void inhabilitarCampos() {
        metodoTiltTest.setEnabled(false);
        resultadoTiltTest.setEnabled(false);
    }

    /**
     * Valida en conjunto todos los campos. Aquellos que son obligatorios y los
     * que no.
     *
     * @return true si el objeto está listo para cargarse, false en caso
     * contrario
     */
    public boolean validarCampos() {
        boolean esMetodoValida = validarCampoMetodo();
        boolean esResultadoValida = validarCamposResultado();

        return esMetodoValida &&
                esResultadoValida;
    }

    /**
     * Valida los campos correspondiente al campo Metodo.
     *
     * @return true si los campos estan listos para cargarse, false en caso
     * contrario
     */
    private boolean validarCampoMetodo() {
        boolean retorno;

        if (!CapaValidacion.validarCampoObligatorio(metodoTiltTest.
                getSelectedItem().toString())) {
            textoMetodoTiltTest.setForeground(
                    Fuente.COLOR_ERROR);
            textoMetodoTiltTest.setToolTipText(
                    InformeError.
                    INFORME_ERROR_CARDIOLOGICO_TILT_TEST_METODO);
            retorno = false;
        } else {
            textoMetodoTiltTest.setForeground(Fuente.COLOR_NORMAL);
            textoMetodoTiltTest.setToolTipText(null);
            retorno = true;
        }

        return retorno;
    }

    /**
     * Valida los campos correspondiente al campo Resultado.
     *
     * @return true si los campos estan listos para cargarse, false en caso
     * contrario
     */
    private boolean validarCamposResultado() {
        boolean retorno;

        if (!CapaValidacion.validarCampoObligatorio(resultadoTiltTest.
                getSelectedItem().toString())) {
            textoResultadoTiltTest.setForeground(
                    Fuente.COLOR_ERROR);
            textoResultadoTiltTest.setToolTipText(
                    InformeError.
                    INFORME_ERROR_CARDIOLOGICO_TILT_TEST_RESULTADO);
            retorno = false;
        } else {
            textoResultadoTiltTest.setForeground(Fuente.COLOR_NORMAL);
            textoResultadoTiltTest.setToolTipText(null);
            retorno = true;
        }

        return retorno;
    }

    /**
     * Recopila los datos del panel para colocarlos dentro del arreglo.
     *
     * @param datosEstudioCardiologia El arreglo a cargar
     */
    public void recopilarDatos(Object[] datosEstudioCardiologia) {

        datosEstudioCardiologia[CapaLogica.
                ESTUDIO_CARDIOLOGIA_TILT_TEST_METODO] =
                metodoTiltTest.getSelectedItem();
        datosEstudioCardiologia[CapaLogica.
                ESTUDIO_CARDIOLOGIA_TILT_TEST_RESULTADO] =
                resultadoTiltTest.getSelectedItem();
    }

    /**
     * Setea en cada componente del JDialog los eventos que capturarán la tecla
     * enter y escape.
     */
    private void setearEventosQueCapturanTeclaEnterYEscape() {
        //Declaración del evento a capturar
        KeyListener keyListenerEscape = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
                    cerrarVentana();
                }
            }
        };

        //Setear eventos
        metodoTiltTest.addKeyListener(keyListenerEscape);
        resultadoTiltTest.addKeyListener(keyListenerEscape);
    }

    private void cerrarVentana() {
        JDialog jdialog = (JDialog)
                this.getParent().getParent().getParent().getParent().
                getParent().getParent().getParent().getParent().
                getParent().getParent().getParent().getParent().getParent();
        jdialog.dispose();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        textoMetodoTiltTest = new javax.swing.JLabel();
        textoResultadoTiltTest = new javax.swing.JLabel();
        metodoTiltTest = new javax.swing.JComboBox();
        resultadoTiltTest = new javax.swing.JComboBox();

        textoMetodoTiltTest.setFont(Fuente.FUENTE_TEXTFIELD);
        textoMetodoTiltTest.setText("Método");
        textoMetodoTiltTest.setPreferredSize(new java.awt.Dimension(166, 20));

        textoResultadoTiltTest.setFont(Fuente.FUENTE_TEXTFIELD);
        textoResultadoTiltTest.setText("Resultado");
        textoResultadoTiltTest.setPreferredSize(new java.awt.Dimension(166, 20));

        metodoTiltTest.setFont(Fuente.FUENTE_COMBOBOX);
        metodoTiltTest.setModel(CapaPresentacion.getListaDeTipoMetodoTiltTestEstudioCardiologia());
        metodoTiltTest.setPreferredSize(new java.awt.Dimension(172, 20));

        resultadoTiltTest.setFont(Fuente.FUENTE_COMBOBOX);
        resultadoTiltTest.setModel(CapaPresentacion.getListaDeTipoResultadoTiltTestEstudioCardiologia());
        resultadoTiltTest.setPreferredSize(new java.awt.Dimension(172, 20));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(textoResultadoTiltTest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoMetodoTiltTest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(resultadoTiltTest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(metodoTiltTest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(169, 169, 169))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoMetodoTiltTest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(metodoTiltTest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoResultadoTiltTest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(resultadoTiltTest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
    }// </editor-fold>//GEN-END:initComponents


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox metodoTiltTest;
    private javax.swing.JComboBox resultadoTiltTest;
    private javax.swing.JLabel textoMetodoTiltTest;
    private javax.swing.JLabel textoResultadoTiltTest;
    // End of variables declaration//GEN-END:variables
    private TilTestEstudioCardiologia tilTestEstudioCardiologia;
}
